package modelo.Orientacion;

public class Posicion {

    private int x;
    private int y;

    public Posicion(int x, int y){
        this.x = x;
        this.y = y;
    }

    public boolean esIgual(Posicion pos){
    /* PreCondicion: las Posiciones deben estar creadas.
       PostCondicion: devuelve true si las posiciones son iguales, en caso
       contrario devuelve false*/
        return ((this.x == pos.x) && (this.y == pos.y));
    }

    public boolean coincideConElEjeY(Posicion pos){
    /* PreCondicion: las Posiciones deben estar creadas
       PostCondicion: devuelve true si coinciden las componentes Y de las
       posiciones, en caso contrario devuelve false*/
        return (this.y == pos.y);
    }

    public boolean coincideConElEjeX(Posicion pos){
    /* PreCondicion: las Posiciones deben estar creadas
       PostCondicion: devuelve true si coinciden las componentes X de las
       posiciones, en caso contrario devuelve false*/
        return (this.x == pos.x);
    }

    public int devolverElValorDelEjeX(){
    /*PreCondicion: la Posicion debe estar creada
      PostCondicion: devuelve el valor de en el eje X de la posicion*/
        return x;
    }

    public int devolverElValorDelEjeY(){
    /*PreCondicion: la Posicion debe estar creada
      PostCondicion: devuelve el valor de en el eje Y de la posicion*/
        return y;
    }

    //El Y fue cambiado para que concuerde con la ventana del titiritero
    
    public Posicion devolverPosDeArriba(){
    /*PreCondicion: la posicion debe estar creada
      PostCondicion: devuelve una nueva posicion pero con la Y disminuida en 1*/
        Posicion pos1 = new Posicion(this.x, this.y-1);
        return pos1;
    }

    public Posicion devolverPosDeAbajo(){
    /*PreCondicion: la posicion debe estar creada
      PostCondicion: devuelve una nueva posicion pero con la Y incrementada en 1*/
        Posicion pos1 = new Posicion(this.x, this.y+1);
        return pos1;
    }

    public Posicion devolverPosALaDerecha(){
    /*PreCondicion: la posicion debe estar creada
      PostCondicion: devuelve una nueva posicion pero con la X incrementada en 1*/
        Posicion pos1 = new Posicion(this.x+1, this.y);
        return pos1;
    }

    public Posicion devolverPosALaIzquierda(){
    /*PreCondicion: la posicion debe estar creada
      PostCondicion: devuelve una nueva posicion pero con la X disminuida en 1*/
        Posicion pos1 = new Posicion(this.x-1, this.y);
        return pos1;
    }
}
